package com.yyq;

import com.yyq.oss.aliyunoss;

import java.io.*;
import java.nio.Buffer;

/**
 * @author yyq
 * @create 2021-11-08 14:29
 */
public class md {
    //处理md文件
    public static void dealMD(String path){
        File file=new File(path);
        //创建临时文件
        File temp =new File("D:\\Markdown\\temp.md");
        System.out.println(file.getName()+"开始处理------");
        BufferedReader br = null; //用于包装InputStreamReader,提高处理性能。因为BufferedReader有缓冲的，而InputStreamReader没有。
        BufferedWriter bw=null;
        try {
            String str = "";
            String str1 = "";

            if(!temp.exists()){
                temp.createNewFile();
            }
            br=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(temp)));

            str=br.readLine();
            while (str != null) {
                //情况一 代码块直接输出
                if(str.contains("```")){
                    System.out.println("遇到代码块，不扫描");
                    String te="";
                    while (true){
                        if(te.contains("```")){
                            bw.write(str);
                            bw.newLine(); //添加换行
                            str=br.readLine();
                            break;
                        }
                        bw.write(str);
                        bw.newLine(); //添加换行
                        str=br.readLine();
                        te=str;
                    }
                    continue;
                }


                //情况二 检查str是否包含 <img src=> 或者 !()[]
                String url=null;
                String replace=null;
                url=zzbds.dealStr(str,path);
                if(url!=null){
                    if(url.contains("http")){
                        System.out.print("无需处理**");
                        System.out.println(url);
                        bw.write(str);
                        bw.newLine(); //添加换行
                    }else{
                        System.out.println("*******************");
                        System.out.print("需要处理--");
                        System.out.println(url);
                        String uploadUrl = aliyunoss.upload(new File(url));
                        System.out.println("处理后-------");
                        System.out.println(uploadUrl);
                        replace= str.replace(url, uploadUrl);
                        System.out.println("*******************");
                        bw.write(replace);
                        bw.newLine(); //添加换行
                    }
                }
                //不满足情况二 直接写
                if(url==null) {
                    bw.write(str);
                    bw.newLine(); //添加换行
                }
                str=br.readLine();

            }
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定文件");
        } catch (IOException e) {
            System.out.println("读取文件失败");
        } finally {
            try {
                br.close();
                bw.close();

                // 关闭的时候最好按照先后顺序关闭最后开的先关闭所以先关s,再关n,最后关m
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //删除老文件 将临时文件代替源文件
        file.delete();
        temp.renameTo(new File(path));
        System.out.println(file.getName()+"结束处理------");
        System.out.println();
    }

    public static void main(String[] args) {
        String path="D:\\Markdown\\研一上期末考试\\test.md";
        dealMD(path);
    }

}
